package sistema.controleVendas.persistencia;

import java.util.HashMap;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import sistema.controleVendas.entidades.Pessoa;
import sistema.controleVendas.entidades.PessoaFisica;
import sistema.controleVendas.entidades.Usuario;

public class Persistencia {

	HashMap<String, String> map;
	EntityManagerFactory emf;
	EntityManager em;


	public Persistencia(){}


	public void conectarBanco(){
		try{

			/*map = new HashMap<String,String>();
	        map.put(Persistence.PERSISTENCE_PROVIDER, "oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider");
	        map.put("toplink.jdbc.driver", "org.postgresql.Driver");
	        map.put("toplink.jdbc.url", "jdbc:postgresql://localhost:5432/controledevendas");
	        map.put("toplink.jdbc.user", "postgres");
	        map.put("toplink.jdbc.password", "postgres");
	        map.put("toplink.ddl-generation", "create-tables");*/


			map = new HashMap<String,String>();
			map.put(Persistence.PERSISTENCE_PROVIDER, "org.apache.openjpa.persistence.PersistenceProviderImpl");
			map.put("openjpa.ConnectionDriverName", "org.postgresql.Driver");
			map.put("openjpa.ConnectionURL", "jdbc:postgresql://localhost:5432/controledevendas");
			map.put("openjpa.ConnectionUserName", "postgres");
			map.put("openjpa.ConnectionPassword", "postgres");
			map.put("openjpa.jdbc.SynchronizeMappings","buildSchema(SchemaAction=refresh)");
			emf = Persistence.createEntityManagerFactory("ControleVendas", map);
			em = emf.createEntityManager();
			System.out.println("Conectado");
		}catch (Exception e) {
			System.out.println(e.getMessage());
		}


	}

	public String desconectarBanco(){
		try {
			if(em.isOpen()){
				em.close();
			}
			if(emf.isOpen()){
				emf.close();
			}
		} catch (Exception e) {
			return "Erro";
		}
		return "OK";
	}


	// Autenticacao

	public Usuario realizaAutenticacao(String usu, String sen){
		em.getTransaction().begin();
		Usuario usuario = (Usuario) em.createQuery("SELECT c FROM Usuario c where usuario='"+usu+"', senha='"+sen).getSingleResult();
		em.getTransaction().commit();
		return usuario;
	}

	// Adicionar Cliente, Fornecedor,

	public void adicionarPessoa(Pessoa pessoa){
		em.getTransaction().begin();
		em.persist(pessoa);
		em.getTransaction().commit();
	}





	// Gerenciar Clientes

	public void adicionarFornecedor(Pessoa pessoa){
		em.getTransaction().begin();
		em.persist(pessoa);
		em.getTransaction().commit();
	}

	public void editarFornecedor(){

	}

	public void removerFornecedor(){

	}

	public void buscarFornecedor(){

	}

	//public void




	// Gerenciar Clientes

	public void adicionarCliente(Pessoa pessoa){
		em.getTransaction().begin();
		em.persist(pessoa);
		em.getTransaction().commit();
	}

	public void editarCliente(){

	}

	public void removerCliente(){

	}

	public void buscarCliente(){

	}




	public static void main(String[] args) {
		Persistencia p1 = new Persistencia();
		p1.conectarBanco();
	}
}
